//
// Created by A4-28 on 2020/10/23.
//
#pragma once

#include <memory>

namespace WF {

    template<typename T>
    using uniquePtr = std::unique_ptr<T>;

    template<typename T, typename ... Args>
    constexpr uniquePtr<T> CreateUPtr(Args &&...args) {
        return std::make_unique<T>(std::forward<Args>(args)...);
    }

    template<typename T>
    using sharePtr = std::shared_ptr<T>;

    template<typename T, typename ...Args>
    constexpr sharePtr<T> CreateSPtr(Args &&...args) {
        return std::make_shared<T>(std::forward<Args>(args)...);
    }
}